package dsc;

import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.*;

/**
 * Helper klasse voor de logger om logberichten leesbaarder te maken
 */
public class CustomFormatter extends Formatter {

	/**
	 * Het nieuwe berichtformaat voor de logberichten
	 */
    private static final MessageFormat messageFormat =
            new MessageFormat("{0,date,h:mm:ss} [{1} - {2}] {3} - {4} \n");

    public CustomFormatter() {
        super();
    }

    /**
     * Bouw de nieuwe logmessage op dmv een object array waarin staan:
     * tijd, klassenaam, methode, loglevel en het bericht
     * 
     */
    public String format(LogRecord record) {
        Object[] arguments = new Object[6];
        arguments[0] = new Date(record.getMillis());
        arguments[1] = toStr(record.getSourceClassName(), 18);
        arguments[2] = toStr(record.getSourceMethodName(), 6);
        arguments[3] = record.getLevel();
        arguments[4] = record.getMessage();
        return messageFormat.format(arguments);
    }

    /**
     * Om de output van de logger wat leesbaarder te maken worden
     * de klasses en de methode namen aangevuld tot een vaste lengte
     * @param s
     * @param n
     * @return
     */
    public String toStr(String s, int n) {
        while ((n - s.length()) >= 0) {
            s += "  ";
        }

        return s;
    }
}
